package com.zhf.douyinvideo.base;

import android.annotation.SuppressLint
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.RelativeLayout
import android.widget.TextView

/**
 * Desc:
 *
 * @author zhf
 * @time 2019/7/30 10:02
 */
abstract class RootActivity : AppCompatActivity() {

    lateinit var rootTitleLinear: LinearLayout
    lateinit var rootLeftLinear: LinearLayout
    lateinit var rootLeftImage: TextView
    lateinit var rootTitle: TextView
    lateinit var rootRightRelative: RelativeLayout
    lateinit var rootRightText: TextView
    lateinit var rootRightImage: ImageView

    /**
     * 得到当前界面的资源文件Id
     * 由子类界面进行复写
     *
     * @return 资源文件Id
     */
    protected abstract val contentLayoutId: Int

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 在界面未初始化之前调用的初始化窗口
        initWidows()
        if (initArgs(intent.extras)) {
            // 得到界面Id并设置到Activity界面中，进行触发
            val layId = contentLayoutId
            setContentView(layId)
            initBefore()
            initWidget()
            initData()
            initData(savedInstanceState)
            addListener()
        } else {
            finish()
        }
    }


    /**
     * 初始化控件调用之前
     */
    open protected fun initBefore() {}

    /**
     * 初始化窗口
     */
    open protected fun initWidows() {

    }

    /**
     * 添加点击事件
     */
    open protected fun addListener() {

    }

    /**
     * 初始化相关参数
     *
     * @param bundle 参数Bundle
     * @return 如果参数正确返回True，错误返回False
     */
    open protected fun initArgs(bundle: Bundle?): Boolean {
        return true
    }

    /**
     * 初始化控件
     */
    open protected fun initWidget() {

    }

    /**
     * 初始化数据
     */
    open protected fun initData() {

    }

    /**
     * 初始化数据
     */
    open protected fun initData(savedInstanceState: Bundle?) {

    }

    /**
     * 返回导航上面的上一页，直接Finish当前页面
     * @return
     */
    override fun onSupportNavigateUp(): Boolean {
        // 当点击界面导航返回时，Finish当前界面
        finish()
        return super.onSupportNavigateUp()
    }

    /**
     * 当Activity进行Back返回时，即手机含有的返回键
     */
    override fun onBackPressed() {
        // 得到当前Activity下的所有Fragment
        @SuppressLint("RestrictedApi")
        val fragments = supportFragmentManager.fragments
        // 判断是否为空
        if (fragments != null && fragments.size > 0) {
            for (fragment in fragments) {
                // 判断是否为我们能够处理的Fragment类型
//                if (fragment is RootFragment) {
//                    // 判断是否拦截了返回按钮
//                    if ((fragment as RootFragment).onBackPressed()) {
//                        // 如果有直接Return
//                        return
//                    }
//                }
            }
        }
        super.onBackPressed()
        finish()
    }

}

